package com.product.statemachine.common.executor;

import com.product.statemachine.common.event.StateEvent;

/**
  * @author: caoxingming
  * @data: 2022/6/9 11:58 上午
  * @description: 状态事件执行器通用接口
  **/
public interface DomainStateEventExecutor<entity,event extends StateEvent> extends Executor {

    /**
     * 事件执行前方法
     * @param entity
     * @param event
     */
    void before(entity entity, event event);

    /**
     * 事件执行方法
     * @param entity
     * @param event
     */
    void execute(entity entity, event event);

    /**
     * 事件后执行方法
     * @param entity
     * @param event
     */
     void after(entity entity, event event);
}
